Worse still, if the expression passed has side effects, such as an assignment expression, then the multiple evaluations may have particularly damaging results. Therefore, expressions producing side effects should not be passed as "arguments" to macros.